// EDPoint3d.h: interface for the EDPoint3d class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_EDPOINT3D_H__51443E3E_9666_40C8_AB3D_BBEB8F862BED__INCLUDED_)
#define AFX_EDPOINT3D_H__51443E3E_9666_40C8_AB3D_BBEB8F862BED__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "EDVariable.h"
#include "Mapping.h"
#include "Extent.h"
#include <gepnt3d.h>

class AFX_EXT_CLASS EDPoint3d  
{
public:
	EDPoint3d();
	~EDPoint3d();
	EDPoint3d (
		const EDSQLExpression& exp0,
		const EDSQLExpression& exp1,
		const EDSQLExpression& exp2 );
	EDPoint3d (
		const CString& str0,
		const CString& str1,
		const CString& str2 );
	EDPoint3d( CONST EDPoint3d& ptRef ) : x( ptRef.x ), y( ptRef.y ), z( ptRef.z ) {}

public://Operator
	EDPoint3d& operator = ( const EDPoint3d& pt );
	EDPoint3d& operator = ( const AcGePoint3d& pt );
	BOOL operator == ( const EDPoint3d& pt ) CONST;

public:
	EDSQLExpression x;
	EDSQLExpression y;
	EDSQLExpression z;

public:
	void Replace (
		const CVarArray* pVarAr,
		const int nStart = 0 );
	BOOL IsSingleDigital();
	void Set (
		const EDSQLExpression& exp0,
		const EDSQLExpression& exp1,
		const EDSQLExpression& exp2 );
	void Set (
		const CString& str0,
		const CString& str1,
		const CString& str2 );

public:
	VOID Enlist( String2String& aStr2Exp );
	BOOL Delist( CONST String2Double& aStr2Dbl, AcGePoint3d& aPt );
	BOOL SetBy( INT& iLastPos, CONST CString& strSource, INT iStartPos, INT iEndPos );

};

#endif // !defined(AFX_EDPOINT3D_H__51443E3E_9666_40C8_AB3D_BBEB8F862BED__INCLUDED_)
